home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 April: Mac OS SDK / Dev.CD Apr 98 SDK1.toast / Development Kits (Disc 1) / QuickDraw 3D / Samples / SampleCode / Plug-in - QuickDraw Renderer / IRS_MetaHandler.c < prev    next >
Encoding:
C/C++ Source or Header  |  1997-08-14  |  3.8 KB  |  146 lines  |  [TEXT/CWIE]

  1. /******************************************************************************\
  2.                                                                         
  3.         Module:        PF_MetaHandler.c                                            
  4.                                                                             
  5.         Purpose:     Performance QD3D metahandler functions                                
  6.                                                                         
  7.         Author:        Sun-Inn Shih                                        
  8.                                                                         
  9.         Copyright (C) 1993-96 Apple Computer, Inc.  All rights reserved.    
  10.                                                                             
  11. \*****************************************************************************/
  12.  
  13. #include <QD3D.h>
  14. #include <QD3DGeometry.h>
  15. #include <QD3DRenderer.h>
  16. #include <QD3DExtension.h>
  17.  
  18. #include "IRS_Geometry.h" 
  19. #include "IRS_MetaHandler.h"
  20. #include "IRS_Methods.h"
  21. #include "IRS_Update.h"
  22.  
  23. /*===========================================================================*\
  24.  *
  25.  *    Routine:    IRS_Geometry_MetaHandler()
  26.  *
  27.  *
  28.  *    kQ3GeometryTypeTriangle
  29.  *    kQ3GeometryTypeLine
  30.  *    kQ3GeometryTypePoint
  31.  *    kQ3GeometryTypeMarker
  32.  *    kQ3GeometryTypePixmapMarker
  33.         
  34. \*===========================================================================*/
  35.  
  36. static TQ3XFunctionPointer IRS_Geometry_MetaHandler(
  37.     TQ3XMethodType            pMethodType)
  38. {
  39.     switch (pMethodType)
  40.     {
  41.         /* triangle handler : required */
  42.         case kQ3GeometryTypeTriangle:
  43.             return (TQ3XFunctionPointer) IRS_Geometry_Triangle;
  44.         
  45.          /* lines : required */
  46.         case kQ3GeometryTypeLine:
  47.             return (TQ3XFunctionPointer) IRS_Geometry_Line;
  48.             
  49.         /* point handler : required */
  50.         case kQ3GeometryTypePoint:
  51.             return (TQ3XFunctionPointer) IRS_Geometry_Point;
  52.             
  53.         /* marker handler : required */
  54.         case kQ3GeometryTypeMarker:
  55.             return (TQ3XFunctionPointer) IRS_Geometry_Marker;
  56.             
  57.         /* pixmapMarker handler : required */
  58.         case kQ3GeometryTypePixmapMarker:
  59.             return (TQ3XFunctionPointer) IRS_Geometry_PixmapMarker;
  60.             
  61.         /* pixmapMarker handler : required */
  62.         case kQ3GeometryTypeTriMesh :
  63.             return (TQ3XFunctionPointer) IRS_Geometry_TM;
  64.             
  65.         default:
  66.             return NULL;
  67.     }
  68. }
  69.  
  70. /*===========================================================================*\
  71.  *
  72.  *    Routine:    IRS_Update_Matrix_MetaHandler()
  73.  *
  74.  *    update
  75.  *
  76. \*===========================================================================*/
  77.  
  78. static TQ3XFunctionPointer IRS_Update_Matrix_MetaHandler(
  79.     TQ3XMethodType            pMethodType)
  80. {
  81.     switch (pMethodType)
  82.     {
  83.         /* update the local to frustum matrix */
  84.         case kQ3XMethodTypeRendererUpdateMatrixLocalToFrustum:
  85.             return (TQ3XFunctionPointer) IRS_Update_Matrix_localToFrustum;
  86.             
  87.         default:
  88.             return NULL;
  89.     }
  90. }
  91.  
  92.  
  93. /*===========================================================================*\
  94.  *
  95.  *    Routine:    IRSMetaHandler()
  96.  *
  97.  *    Comments:    top level meta handler
  98.  *
  99. \*===========================================================================*/
  100. TQ3XFunctionPointer IRSMetaHandler(
  101.     TQ3XMethodType    pMethodType)
  102. {
  103.     switch (pMethodType)
  104.     {
  105.         /* initialization */
  106.         case kQ3XMethodTypeObjectNew:
  107.             return (TQ3XFunctionPointer) IRSNew;
  108.  
  109.         /* clean up */
  110.         case kQ3XMethodTypeObjectDelete:
  111.             return (TQ3XFunctionPointer) IRSDelete;
  112.  
  113.         /* start frame : required */
  114.         case kQ3XMethodTypeRendererStartFrame:
  115.             return (TQ3XFunctionPointer) IRSStartFrame;
  116.  
  117.         /* end frame: optional */
  118.         case kQ3XMethodTypeRendererEndFrame:
  119.             return (TQ3XFunctionPointer) IRSEndFrame;
  120.  
  121.         /* start pass : required*/
  122.         case kQ3XMethodTypeRendererStartPass:
  123.             return (TQ3XFunctionPointer) IRSStartPass;
  124.  
  125.         /* end pass : required */
  126.         case kQ3XMethodTypeRendererEndPass:
  127.             return (TQ3XFunctionPointer) IRSEndPass;
  128.  
  129.         /* cancel rendering: required*/
  130.         case kQ3XMethodTypeRendererCancel:
  131.             return (TQ3XFunctionPointer) IRSCancel;
  132.  
  133.         /* to second level metahandlers */
  134.         /*    geometry meta handler: required */
  135.         case kQ3XMethodTypeRendererSubmitGeometryMetaHandler:
  136.             return (TQ3XFunctionPointer) IRS_Geometry_MetaHandler;
  137.  
  138.         /*    matrix meta handler: optional */
  139.         case kQ3XMethodTypeRendererUpdateMatrixMetaHandler:
  140.             return (TQ3XFunctionPointer) IRS_Update_Matrix_MetaHandler;
  141.  
  142.         default:
  143.             return NULL;
  144.     }
  145. }
  146.